package com.shujia.wyh.day04;

/*
    如何定义一个数组？
        语句定义格式：
            1、数据类型[] 数组名;
            2、数据类型 数组名[];
        推荐使用第一种写法，第一种写法简单明了地指出了当前是要定义一个一维数组，也明确了数组中元素的数据类型
        第二种写法，是很早一批程序员的写法，渐渐地会淘汰第二种写法。
        无论局部变量是基本数据类型的还是引用数据类型，在使用之前，都需要进行初始化。
        数组的初始化代表什么意思呢？代表的是在内存中为我们的数组开辟空间，划分区域。
        如何对数组进行初始化呢？
        动态初始化：我们自己手动地输入数组最大元素的个数，然后再对每一个位置上的元素进行一一赋值
        静态初始化：先对每一个位置进行赋值，然后由JVM自己推断出数组的大小


        动态初始化：初始化时只指定数组长度，由系统为数组分配初始值。
            语句定义格式：数据类型[] 数组名 = new 数据类型[数组的大小];
            举例：定义一个最大可以存储3个int类型的元素的数组
            int[] arr = new int[3];


        我们学会了如何定义一个数组，并进行动态初始化，但是呢打印数组名和数组的元素内容的时候发现，数组中元素的值是系统赋予的默认值。
        但是，我们创建数组的目的，是为了存储我们自己的数组而不是使用默认的数据。所以应该将我们自己的元素存储到数组中，实际上就是对数组中元素赋值的过程




 */
public class ArrayDemo2 {
    public static void main(String[] args) {
        //定义一个int类型的数组
//        int[] arr1;
//        System.out.println(arr1);

        /**
         * 以赋值语句=将式子分为左右两个部分
         *
         * 左边部分解释：
         *  int: 规定了这是一个只能存储int类型的数组
         *  []: 表示我要定义的是一个一维数组
         *  arr: 是数组的名字，符合变量的命名规范
         *
         * 右边部分解释：
         *  new: 但凡看到new，就意味着在堆内存中开辟空间
         *  int: 规定了这是一个只能存储int类型的数组
         *  []: 表示我要定义的是一个一维数组
         *  3: 表示数组最大只能存储3个元素
         */
        int[] arr = new int[3];
        System.out.println(arr);

        //数组的特点：数组中有索引下标的概念，可以通过对应的索引值来获取对应位置上的元素值，但是这个索引是0
        //假如长度是10，索引最大值就是9
        //如何通过索引获取，语句定义格式：数组名[索引]
        //获取第一个元素的值
        System.out.println(arr[0]);
//        System.out.println(arr[1]);
//        System.out.println(arr[2]);

        System.out.println("======================================");
        //需求：将11，22，33赋值到数组arr中
        arr[0] = 11;
        System.out.println(arr[0]);
//        arr[0] = "杨志"; //赋值的时候需要注意元素的数据类型


    }
}
